package net.neptech.util;

import cn.hutool.core.collection.CollUtil;
import net.neptech.model.sys.Dept;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

/**
 * @Author Saya
 * @Date 2025/8/22 11:51
 * @Description TODO
 **/
public class DataUtil {
    /**
     * 转换秒为时分秒的形式
     *
     * @param seconds 待转换的秒
     * @return
     */
    public static String getDate(Integer seconds) {
        if(seconds==null){
            return null;
        }
        int h = seconds / 3600;
        int m = (seconds % 3600) / 60;
        int s = (seconds % 3600) % 60;
        return h + ":" + m + ":" + s ;
    }

    /**
     * 根据当前部门id，向上查找所有的部门
     * @return 返回包括自己部门在内的所有父级部门
     */
    public static List<Dept> selectParentByDept(Long deptId, List<Dept> allDeptList) {
        List<Dept> list=new ArrayList<>();
        Dept dept = allDeptList.stream().filter(w -> w.getDeptId().equals(deptId)).findAny().orElse(null);
        if (dept == null || dept.getParentId() == null) {
            return list;
        }
        Long parentId = dept.getParentId();
        List<Dept> deptList = selectParentByDept(parentId, allDeptList);
        list.add(dept);
        list.addAll(deptList);
        return list;
    }

    /**
     * 根据当前部门id，向下查找所有的部门
     * @return 返回包括自己部门在内的所有子级部门
     */
    public static List<Dept> selectChildrenByDept(Long deptId, List<Dept> allDeptList) {
        List<Dept> list=new ArrayList<>();
        list.add(allDeptList.stream().filter(w->w.getDeptId().equals(deptId)).findFirst().orElse(null));
        List<Dept> collect =
                allDeptList.stream().filter(w -> w.getParentId().equals(deptId)).collect(Collectors.toList());
        if (CollUtil.isEmpty(collect)) {
            return list;
        }
        for (Dept dept : collect) {
            List<Dept> depts = selectChildrenByDept(dept.getDeptId(), allDeptList);
            list.addAll(depts);
        }
        return list;
    }
//    /**
//     * 根据当前菜单id，向下查找所有的菜单
//     * @return 返回包括自己在内的所有子级菜单
//     */
//    public static List<Menu> selectChildrenByMenu(long menuId, List<Menu> allMenuList) {
//        List<Menu> list=new ArrayList<>();
//        list.add(allMenuList.stream().filter(w->w.getId().longValue()==menuId).findFirst().get());
//
//        List<Menu> collect = allMenuList.stream().filter(w -> w.getParentId().longValue() == menuId).collect(Collectors.toList());
//        if (CollUtil.isEmpty(collect)) {
//            return list;
//        }
//        for (Menu dept : collect) {
//            List<Menu> depts = selectChildrenByMenu(dept.getId(), allMenuList);
//            list.addAll(depts);
//        }
//        return list;
//
//    }
}
